/**
 * 邮箱
 * @param {*} s
 */
export function isEmail(s) {
  return /^([a-zA-Z0-9])+(([a-zA-Z0-9])|([._-][a-zA-Z0-9])*)+@([a-zA-Z0-9-])+((\.[a-zA-Z0-9-]{2,3}){1,2})$/.test(s)
}

/**
 * 手机号码 11位数字 eg: 00000000000
 * @param {*} s
 */
export function isMobile(s) {
  return /^[0-9]{11}$/.test(s)
}

/**
 * 身份证
 * @param {*} s
 */
export function isCardID(s) {
  return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(s)
}

/**
 * 电话号码
 * @param {*} s
 */
export function isPhone(s) {
  return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)
}

/**
 * URL地址
 * @param {*} s
 */
export function isURL(s) {
  return /^http[s]?:\/\/.*/.test(s)
}

/**
 * 密码，密码由8-16位数字、字母、特殊符号(!~_%&*(),.@#$^)组成
 * @param {*} s
 */
export function isPwd(s) {
  return /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[!~_%&*(),.@#$^])[\da-zA-Z!~_%&*/(),.@#$^]{8,16}$/.test(s)
}

/**
 * 银行卡号，由于对公账户改为1-30位数字
 * @param {*} s
 */
export function isBankCard(s) {
  return /^\d{1,30}$/.test(s)
}

/** form,validators */

// 手机格式验证
export function validatorPhone(rule, value, callback) {
  if (value) {
    if (isMobile(value)) {
      callback()
    } else {
      callback(new Error('手机号格式不正确'))
    }
  } else {
    callback()
  }
}

// 邮箱格式验证
export function validatorEmail(rule, value, callback) {
  if (value) {
    if (isEmail(value)) {
      callback()
    } else {
      callback(new Error('邮箱格式不正确'))
    }
  }
}

//银行卡格式验证
export function validatorBankCard(rule, value, callback) {
  if (value) {
    if (isBankCard(value)) {
      callback()
    } else {
      callback(new Error('银行卡格式不正确'))
    }
  }
}

//车架号验证
export function validatorVin(rule, value, callback) {
  if (value) {
    if (isVin(value)) {
      callback()
    } else {
      callback(new Error('车架号请输入17位数字英文'))
    }
  }
}

//身份证验证
export function validatorIdCard(rule, value, callback) {
  if (!value || isCardID(value)) {
    callback()
  } else {
    callback(new Error('证件号格式不正确'))
  }
}

/**
 * 报案号
 * @param {*} s
 */
export function validateCode(s) {
  return /^[a-zA-Z0-9]{10,30}$/.test(s)
}

/**
 * 车架号
 * @param {*} s
 */
export function isVin(s) {
  return /^[a-zA-Z0-9]{17}$/.test(s)
}

/**
 * 统一社会信用代码
 * @param {*} s
 */
export function validateUSCCode(s) {
  return /^[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/g.test(s)
}

/**
 * 文本只能输入中文和英文
 * @param {*} s
 */
export function validateText(s) {
  return /^[\u0391-\uFFE5A-Za-z]+$/.test(s)
}

/**
 * 文本只能输入中文,英文,数字
 * @param {*} s
 */
export function validateText2(s) {
  return /^[A-Za-z0-9\u4e00-\u9fa5]+$/.test(s)
}
